#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 7.字符串压缩。利用字符重复出现的次数，编写一种方法，实现基本的字符串压缩功能。比如，字符串aabcccaaa会变为2ab5c3a。若“压缩”后的字符串没有变短，则返回原先的字符串。
// 你可以假设字符串中只包含大小写英文字母(a至z)。例:
// 输入:“aabcccccaaa”
// 输出:“2ab5c3a”

char *compressString(char *str)
{
    int count = 1;
    int index = 0;
    char current = str[0];
    int length = strlen(str);
    char *compressed = calloc(2 * length + 1, 1);
    for (int i = 0; i < length; i++)
    {
        if (str[i] == str[i + 1])
        {
            count++;
        }
        else
        {
            if (count > 1)
            {
                index += sprintf(&compressed[index], "%d", count); // 将整数转换为字符串并存储到字符数组中
            }
            compressed[index] = str[i];
            index++;
            count = 1;
        }
    }
    compressed[index] = '\0';

    // 如果压缩后没有变短，返回原字符串
    if (strlen(compressed) >= length)
    {
        free(compressed);
        return str;
    }

    return compressed;
}

int main() 
{
    char *str = (char *)malloc(100);
    strcpy(str, "aabcccccaaa");
    printf("%s", compressString(str));
    // free(compressString);
    free(str);
    return 0;
}